Jeżeli chcesz zwiększyć szybkość działania fragmentu twojego kodu, zwłaszcza jeżeli kod ten dotyczy jakichś obliczeń matematycznych rozważ użycie biblioteki numba. Pytigon nie dodaje żadnego specjalnego wsparcia dla tej biblioteki poza tym, że jest ona standardowo dołączana do systemu, więc nie musisz się martwić o jej instalację.
Jeżeli jakiś mały fragment twojego kodu ma działać z maksymalną dostępną szybkością to rozważ użycie llvm ir. Osiągniesz wydajność dostępną dla asemblera, niestety kosztem łatwości użycia.
Example of use:
def make_csum_fun(): from pytigon_lib.schtools.llvm_exec import compile_str_to_module, get_function from ctypes import CFUNCTYPE, c_int
fun_str = """
define dso_local i32 @cadd(i32 %0, i32 %1) #0 {
[3 = alloca i32, align 4] [4 = alloca i32, align 4] store i32 %0, i32 %3, align 4 store i32 %1, i32 %4, align 4 [5 = load i32, i32* %3, align 4] [6 = load i32, i32* %4, align 4] [7 = add nsw i32 %5, %6] ret i32 %7 } """
compile_str_to_module(fun_str)
func_ptr = get_function("cadd")
cfunc = CFUNCTYPE(c_int, c_int, c_int)(func_ptr)
return cfunc
csum = make_csum_fun()
print(csum(2, 3))